Data centers are facilities used to house computer systems and associated components, primarily computing, network, and storage systems. These data centers process data from a host computer owned by a tenant by routing the data from an ingress point to a terminal database server or storage array.
The amount of data that such a data center processes for a tenant may be governed by a service level agreement (SLA). For example, suppose that a bank needs to authenticate a series of requests to access customer accounts. To accomplish this, the bank sends transaction data—in some cases, at a rate specified in an SLA—over a network to an authentication data center that houses authentication database servers and associated data storage systems. The data center then routes the transactions through a switching fabric to the database servers in order to perform lookups in storage to generate authentication results at a rate specified by the SLA. It should be understood that different applications may need different IO rates to maintain functionality, the data rates and network parameters of normal operation define a SLA balanced with the cost for SLA requirements.
Such data centers enforce rates specified in SLAs by using redundant processing, storage, and routing components. Suppose that, in the above authentication example, one of the database servers goes down. In such a situation, without redundant equipment, a data center would likely not be able to satisfy a minimum service level specified in an SLA. The data center uses overallocation and the redundancy of its components to tolerate component failure or degradation of components and paths in such a way that the terms of the SLAs remain satisfied.
Nevertheless, to further ensure reliability, i.e., to satisfy the SLAs and not cause any equipment breakdowns in doing so, conventional data centers have a human administrator monitor the various components to react to various situations in the data center as they arise. For example, by observing accesses per minute on a set of database servers, the administrator can perform load balancing across the servers to avoid one server going down from overutilization.